package com.styytech.dadabao;

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;

import com.lidroid.xutils.view.annotation.ContentView;
import com.lidroid.xutils.view.annotation.ViewInject;
import com.lidroid.xutils.view.annotation.event.OnClick;
import com.styytech.dadabao.base.BaseActivity;
import com.styytech.dadabao.ui.main.GesturePasswordActivity;
import com.styytech.dadabao.ui.main.MainActivity;
import com.styytech.dadabao.utils.SPUtils;
import com.styytech.dadabao.utils.SpUser;
import com.styytech.dadabao.widge.viewpagers.BannerView;

import java.util.ArrayList;
import java.util.List;

/**
 *
 */
@ContentView(R.layout.activity_guide)
public class GuideActivity extends BaseActivity {
    private static final int LOAD_DISPLAY_TIME = 1000 * 3;// 启动界面时间

    @ViewInject(R.id.iv_start)
    ImageView iv_start;
    @ViewInject(R.id.flyt_container)
    FrameLayout flyt_container;
    @ViewInject(R.id.vp_viewpager)
    private ViewPager vp_viewpager;
    @ViewInject(R.id.llyt_viewgroup)
    private ViewGroup llyt_viewgroup;
    @ViewInject(R.id.btn_login)
    private ImageView btn_login;
    @ViewInject(R.id.btn_regis)
    private ImageView btn_regis;
    @ViewInject(R.id.llyt_buttons)
    LinearLayout llyt_buttons;
    @ViewInject(R.id.bt_next)
    Button bt_next;

    /**
     * 是否第一次打开应用
     */
    private boolean isFirst = false;

    Context mContext = null;

    @SuppressLint("InflateParams")
    @Override
    public void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);

        // 这是为了应用程序安装完后直接打开，按home键退出后，再次打开程序出现的BUG
        if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
            finish();
            return;
        }
        mContext = this;
        DadaApplication.list_activity.add(this);

        initView();
        setStartBg();
    }

    /**
     * 初始化组件
     */
    private void initView() {
        setViewVisible(View.VISIBLE, View.GONE);
    }

    /**
     * 设置启动背景
     */
    private void setStartBg() {
        new Handler().postDelayed(new Runnable() {
            public void run() {
                setGuide();
            }
        }, LOAD_DISPLAY_TIME);
    }

    /**
     * 根据是否是第一次打开应用，加载不同功能。 如果是则打开引导页。
     */
    private void setGuide() {
        isFirst = SPUtils.getOpenFirst(mContext);
         /*获取手势密码开关，默认开*/
        boolean isGestureSwitchOpen = SpUser.getGestureSwitch(mContext);
        /*获取token*/
        String token = SpUser.getUserToken(mContext);
        if (isFirst) { // 第一次打开应用
            initGuide();
        } else if (isGestureSwitchOpen && token != null) {
            // 如果开启了进入手势密码
            startMainActivity(GesturePasswordActivity.class);
        } else {
            // 如果没有开启，则直接进入主页
            startMainActivity(MainActivity.class);
        }
    }

    /**
     * 打开引导页
     */
    private void initGuide() {
        setViewVisible(View.GONE, View.VISIBLE);
        //实例化一个轮播视图实例
        BannerView bannerView = new BannerView(mContext, llyt_viewgroup, vp_viewpager);
        //设置轮播图视图的一些属性
        setBannerView(bannerView);
    }

    /**
     * 设置轮播图视图的一些属性
     *
     * @param bannerView 轮播图对象
     */
    private void setBannerView(final BannerView bannerView) {
        // 设置是否自动轮播
        // bannerView.setAutoPlay(true);
        // bannerView.setAutoPlayIntervalTime(1000);
        // 是否需要循环
        // bannerView.setLoop(true);
        // 是否需要小圆点
        bannerView.setDot(true);

        /** 设置轮播页的图片列表集 */
        bannerView.setOnAddPageView(new BannerView.IBViewSetPageView() {

            @Override
            public List<Object> setPageView() {
                int[] resid = new int[]{R.drawable.no1, R.drawable.no2,
                        R.drawable.no3, R.drawable.no4, R.drawable.no5};
                List<Object> views = new ArrayList<Object>();
                for (int i = 0; i < resid.length; i++) {
                    ImageView img = new ImageView(mContext);
                    img.setScaleType(ImageView.ScaleType.FIT_XY);
                    img.setBackgroundResource(resid[i]);
                    views.add(img);
                }
                return views;
            }
        });
        /**
         * 设置轮播页的轮播点(小圆点图片)列表集接口 <br>
         * */
        bannerView.setOnAddDotView(new BannerView.IBViewSetDotView() {

            @Override
            public void setDotView(ImageView imageView, int positon,
                                   int selected) {
                /*最后一页显示立即体验按钮*/
                if (selected == bannerView.getCount() - 1) {
                    bt_next.setVisibility(View.VISIBLE);
                } else {
                    bt_next.setVisibility(View.GONE);
                }
                LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(
                        LinearLayout.LayoutParams.WRAP_CONTENT,
                        LinearLayout.LayoutParams.WRAP_CONTENT);
                lparams.setMargins(5, 0, 0, 5);
                imageView.setLayoutParams(lparams);
                // 获取轮播图页数
                if (positon == selected) {
                    imageView.setBackgroundResource(R.drawable.mdot_focused);
                } else {
                    imageView
                            .setBackgroundResource(R.drawable.mdot_default);
                }
            }
        });
        // 根据前面的设置，初始ViewPager
        try {
            bannerView.displayViewPager();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    /**
     * 设置组件是否显示
     *
     * @param start    启动界面
     * @param vewPager 引导页
     */
    private void setViewVisible(int start, int vewPager) {
        iv_start.setVisibility(start);
        flyt_container.setVisibility(vewPager);
    }

    @OnClick({R.id.bt_next})
    public void click(View view) {
        switch (view.getId()) {
            case R.id.bt_next:
                startMainActivity(MainActivity.class);
                break;

            default:
                break;
        }
    }


    private void startMainActivity(Class clazz) {

        SPUtils.setOpenFirst(mContext, false);
        Intent intent = new Intent(mContext, clazz);
        startActivity(intent);
        finish();
    }
}
